Add gtk_widget_set_window()
authorMichael Natterer <mitch@gimp.org>
Fri, 28 Aug 2009 14:51:48 +0000 (16:51 +0200)
committerMichael Natterer <mitch@gimp.org>
Fri, 28 Aug 2009 14:51:48 +0000 (16:51 +0200)
New function as replacement for setting widget->window directly.
Should only be used in GtkWidget::realize().

gtk/gtk.symbols
gtk/gtkwidget.c
gtk/gtkwidget.h

index bd13c9216cbf71d80709e3eaa8ce18fd48709407..5d5cbecf0c0faa647c897966628848254c7ce609 100644 (file)
@@ -5088,6 +5088,7 @@ gtk_widget_set_tooltip_markup
 gtk_widget_set_tooltip_text
 gtk_widget_set_tooltip_window
 gtk_widget_set_visible
+gtk_widget_set_window
 gtk_widget_shape_combine_mask
 gtk_widget_input_shape_combine_mask
 gtk_widget_show
index 0f29020593d8a8d0358844adc7206b89dd812db5..9ee2218e9c66612a8d7561bdeb7179849cf7beab 100644 (file)
@@ -5737,8 +5737,8 @@ gtk_widget_is_drawable (GtkWidget *widget)
 {
   g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
 
-  return ((GTK_WIDGET_FLAGS (wid) & GTK_VISIBLE) != 0 &&
-          (GTK_WIDGET_FLAGS (wid) & GTK_MAPPED) != 0);
+  return ((GTK_WIDGET_FLAGS (widget) & GTK_VISIBLE) != 0 &&
+          (GTK_WIDGET_FLAGS (widget) & GTK_MAPPED) != 0);
 }
 
 /**
@@ -10835,6 +10835,37 @@ gtk_widget_set_allocation (GtkWidget           *widget,
   widget->allocation = *allocation;
 }
 
+/**
+ * gtk_widget_set_window:
+ * @widget: a #GtkWidget
+ * @window: a #GdkWindow
+ *
+ * Sets a widget's window. This function should only be used in a
+ * widget's GtkWidget::realize() implementation. The %window passed is
+ * usually either new window created with gdk_window_new(), or the
+ * window of its parent widget as returned by
+ * gtk_widget_get_parent_window().
+ *
+ * Widgets must indicate whether they will create their own #GdkWindow
+ * by calling gtk_widget_set_has_window(). This is usually done in the
+ * widget's init() function.
+ *
+ * Since: 2.18
+ */
+void
+gtk_widget_set_window (GtkWidget *widget,
+                       GdkWindow *window)
+{
+  g_return_if_fail (GTK_IS_WIDGET (widget));
+  g_return_if_fail (window == NULL || GDK_IS_WINDOW (window));
+
+  if (widget->window != window)
+    {
+      widget->window = window;
+      g_object_notify (G_OBJECT (widget), "window");
+    }
+}
+
 /**
  * gtk_widget_get_window:
  * @widget: a #GtkWidget
index eb972c9d42d1a0cf687905467180bb23fc7dbbe1..d00beeb753960ddcfae0e68ed47acb572197f864 100644 (file)
@@ -609,7 +609,10 @@ GdkWindow           * gtk_widget_get_parent_window      (GtkWidget    *widget);
 void                  gtk_widget_set_child_visible      (GtkWidget    *widget,
                                                         gboolean      is_visible);
 gboolean              gtk_widget_get_child_visible      (GtkWidget    *widget);
-GdkWindow*            gtk_widget_get_window             (GtkWidget    *widget);
+
+void                  gtk_widget_set_window             (GtkWidget    *widget,
+                                                         GdkWindow    *window);
+GdkWindow           * gtk_widget_get_window             (GtkWidget    *widget);
 
 void                  gtk_widget_get_allocation         (GtkWidget     *widget,
                                                          GtkAllocation *allocation);